//! Redis-rs2 主服务器程序
//! 
//! 启动完整的Redis服务器，包括网络层、协议层和存储层

use redis_rs2::network::start_simple_tokio_redis_server;
use std::env;
use tracing::{info, Level};

#[tokio::main]
async fn main() -> std::io::Result<()> {
    // 初始化日志
    tracing_subscriber::fmt()
        .with_max_level(Level::INFO)
        .init();
    
    // 从环境变量或命令行参数获取监听地址
    let bind_addr = env::args()
        .nth(1)
        .unwrap_or_else(|| "127.0.0.1:6379".to_string());
    
    info!("🚀 启动 Redis-rs2 完整服务器...");
    info!("📍 监听地址: {}", bind_addr);
    info!("🎯 使用协议: Redis RESP");
    info!("⚡ 运行时: Tokio");
    info!("🔧 架构: 网络层 + 协议层 + 存储层");
    

    
    // 启动服务器
    if let Err(_e) = start_simple_tokio_redis_server(&bind_addr).await {
        // 服务器启动失败
        std::process::exit(1);
    }
    
    Ok(())
}